package edu.ahut.corejava;

/**
 * 把1-n这n个自然数连续排列在一起，问这个字符串有多长
 * n<=100
 * n<=100000
 * n<=10000000
 *n<1e8
 * n<1e16
 * O(n!)>O(2^n)>O(n^3) >O(n^2)>O(nlogn) >O(n) >O(sqrt(n)) > O(log(n))  > O(1)
 */
public class JoinNumbers2 {//O(n)

    public static void main(String[] args) {
        System.out.println(length(1234));
        int n = 4000000;
        long start = System.currentTimeMillis();//计时器
        int tot = 0;
        for (int i = 1; i <= n; i++) {
            //把i这个数字的长度累加到tot里
            tot += length(i);
        }

        System.out.println(tot);
        long end = System.currentTimeMillis();//计时

        double cost = (end - start) / 1000.0;
        System.out.println(cost + " Second(s).");

    }

    /**
     * 计算一个整数的长度
     *
     * @param n
     * @return n的长度
     */
    static int length(int n) {
        return Integer.toString(n).length();


    }

}
